const obj = {
  ua: navigator.userAgent.toLowerCase(),
  have: (e: string) => obj.ua.indexOf(e) > -1,
  haveNot: (e: string) => obj.ua.indexOf(e) === -1,
  isAndroid: () => /android|adr/i.test(obj.ua),
  isIOS: () => /iphone|ipod|ipad/i.test(obj.ua),
  isIpad: () => /ipad/i.test(obj.ua),
  isMac: () => /macintosh|mac os x/i.test(obj.ua),
  isMobile: () => /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(obj.ua),
  isLinux: () => /Linux/i.test(obj.ua) && !obj.isMobile(),
  isSafari: () => obj.have('safari/') && obj.haveNot('chrome/') && obj.haveNot('qq/') && obj.haveNot('mqqbrowser'),
  isIE: () => /(msie\s|trident.*rv:)([\w.]+)/i.test(obj.ua),
  isFF: () => /firefox/.test(obj.ua),
  isEdge: () => /edge/.test(obj.ua),
  isIE8: () => /msie\s8\.0/.test(obj.ua),
  isWeChat: () => /micromessenger/i.test(obj.ua) && !/wxwork/i.test(obj.ua),
  isWechatMiniProgram: () => obj.isWeChat() && /miniProgram/i.test(obj.ua),
  isTBS: () => /tbs\/\d+/i.test(obj.ua),
}

export default Object.freeze(obj)